With each passing day consumers, business people, and manufacturers continually pressure computer and chip manufacturers to produce faster computer systems. Computer makers, to a great extent, have traditionally focused on improving processor designs and increasing processor throughput. Computer makers have also increased the speed and performance of chips that work in tandem with processors on a motherboard, such as input-output bridge chips. Additionally, they have improved motherboard bus systems as evidenced by higher speed buses and bus separation, such as separating the system bus from the input-output bus. The end result being that system performance bottlenecks have been reduced. One device that computer hardware manufacturers have improved, but which improvements pale in comparison to advancements made in purely electronic components, are computer hard disk drives and data storage devices.
Hard disks, as well as other data storage devices, remain critical bottlenecks in computer systems. One of the reasons for this stems from the nature of hard drives. Hard disks are electromechanical devices. When compared with other purely electronic devices, hard drives are slower by several orders of magnitude due to their mechanical nature. For example, while the performance or response time of a chip on the motherboard may be measured in microseconds or nanoseconds, hard drive performance parameters are generally measured in terms of milliseconds. Hard drive manufacturers have responded to consumer demands of faster data storage devices and improved the performance of such devices in a variety of different ways.
One technique hard drive manufacturers have employed is increasing the rotational speeds of the device platters. For example, hard drive manufacturers have increased the speeds of drives from 5400 rotations-per-minute (RPM) to 7200 RPM and 10,000 RPM. Additionally, they have increased the amount of hard drive cache memory to sizes that are now 8 and 16 megabytes (MB). Additionally, hard drive manufacturers are starting to employ command queuing techniques more and more often. One of the advantages of storing drive commands in a queue is the ability to improve the throughput of requests by reducing rotational and seek latencies associated with the requests. Another advantage of command queuing is the improvement of drive random input-output performance. Even so, existing queued command execution techniques have numerous limitations and undesirable side effects when a command that is outside the queue needs to be executed immediately, or ahead of the queued commands.